#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

//    //指针前面widget表示要引用哪个类的成员函数
//    void (Widget::*Signal_Qstr)(QString) = &Widget::MySignal;//如果信号和槽是在另外的类中,使用函数指针就不用定义对象来取到成员函数了
//    void (Widget::*Signal)() = &Widget::MySignal;

//    void (Widget::*Slot_Qstr)(QString) = &Widget::MySlots;
//    void (Widget::*Slot)() = &Widget::MySlots;

//    connect(this,Signal_Qstr,this,Slot_Qstr);
//    connect(this,Signal,this,Slot);

//    MyEmit("");
//    MyEmit("我是带参数的");

    connect(this,&Widget::MySignal,this,&Widget::MySlot);
    myEmit("带参数的",1);
}

//void Widget::MyEmit(QString str)
//{
//    if(str == "")
//        emit MySignal();
//    else
//        emit MySignal(str);
//}

Widget::~Widget()
{
    delete ui;
}

//void Widget::MySlots()
//{
//    qDebug() << "Widget::MySlots()被调用";
//}

//void Widget::MySlots(QString str)
//{
//    qDebug() << "Widget::MySlots(QString)被调用，参数是" << str;
//}

void Widget::MySlot(QString str)
{
    qDebug() << "Widget::MySlot(QString)被调用，参数是" << str;
}

void Widget::myEmit(QString str, int n)
{
    emit MySignal(str,n);
}
